[INV-BACKEND-032] Создать метод VerifyStockAvailability
Разработка gRPC-метода реактивной пакетной проверки и блокировки остатков
NoteКраткая карточка задачи
- Репозиторий / Компонент:
fridge-service(Домен INVENTORY). - Контракт метода: Внутренний gRPC-метод
VerifyStockAvailability(VerifyStockRequest). - Ссылка на Метод: Спецификация публикации фактов создания готовых блюд
- Статус: Готово к реализации
- Инструкция по шагам:
- Принять gRPC-запрос, содержащий массив
menu_required_items(ID продуктов и требуемые объемы) иspace_type. Открыть атомарную транзакцию вPostgreSQL Fridge DB. - На Шаге 11: Выполнить агрегированный запрос проверки текущих остатков в таблице
fridge_inventoryпо всем переданным ID продуктов суммарно для текущей группы. - На Шаге 12а (Блокировка OFFICE): Если
space_type == "OFFICE"и хотя бы по одному продукту из массива требуемый объем превышает суммарный текущий остаток на полках (quantity), немедленно прервать транзакцию (ROLLBACK) и вернуть gRPC-статусFAILED_PRECONDITIONс детализацией дефицитных позиций. - На Шаге 12б (Каскад HOME / Валидный OFFICE): Если продуктов достаточно, либо если
space_type == "HOME"(где дефицит разрешен), запустить каскадный FIFO-вычет для всего пакета продуктов. ВыполнитьCOMMITтранзакции вfridge_dbи вернуть успешный gRPC-ответ (Шаг 13б).
- Принять gRPC-запрос, содержащий массив